package gemsa.beans;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;


/**
 * Classe Questionnaire
 * @author Projet Dev Groupe 33
 * @version 1.0
 */
public class Projet 
{
	// Attributs 
	private int id;
	private Date dateCreation;
	private Date dateModification;
	private int etat;
	private double total;
	private List<LigneProjet> listeLigneProjet;
	private Client client;
	private String projetNom;
	private String porteurNom;
	private String porteurInstitution;
	private String porteurRegion;
	private String besoinSysteme;
	private String apportSysteme;
	private String utilisateurFinal;
	private String caracteristique;
	private String centreNom;
	private String centreNombre;
	private String centrePeriphNombre;
	private String specialite;
	private String application;
	private String patientNombre;
	private String carac;
	private String tempsVie;
	private String tempsMaturite;
	private String tempsFonctionnement;
	private String tempsActivite;
	private String tempsFrequence;
	private String tempsType;
	private String finalite;
	private String dateDebut;
	private boolean[] financement;
	private boolean[] professionnelSante;
	private boolean[] professionnelSocio;
	private boolean[] domaine;
	private boolean[] population;
	private boolean[] equipement;
	
	
	// Constructeur 
	public Projet()
	{
		super();
		
		// Initialisation du coefficient
		total=0;
		etat=0;
		dateCreation=new Date();
		dateModification=new Date();
		
		// On initialise la liste des reponses
		listeLigneProjet=new ArrayList<LigneProjet>();
	}

	// Accesseurs 
	public Client getClient() 
	{
		return client;
	}

	public void setClient(Client client)
	{
		this.client=client;
	}

	public Date getDateCreation() 
	{
		return dateCreation;
	}

	public void setDateCreation(Date dateCreation)
	{
		this.dateCreation=dateCreation;
	}

	public Date getDateModification() 
	{
		return dateModification;
	}

	public void setDateModification(Date dateModification) 
	{
		this.dateModification=dateModification;
	}

	public int getEtat()
	{
		return etat;
	}

	public void setEtat(int etat)
	{
		this.etat=etat;
	}

	public int getId()
	{
		return id;
	}

	public void setId(int id) 
	{
		this.id=id;
	}

	public List<LigneProjet> getListeLigneProjet()
	{
		return listeLigneProjet;
	}

	public void setListeLigneProjet(List<LigneProjet> listeLigneProjet) 
	{
		this.listeLigneProjet=listeLigneProjet;
	}

	public double getTotal()
	{
		return total;
	}

	public void setTotal(double total) 
	{
		this.total=total;
	}

	public String getProjetNom() 
	{
		return projetNom;
	}

	public void setProjetNom(String projetNom)
	{
		this.projetNom=projetNom;
	}
	
	/**
	 * @return the porteurNom
	 */
	public String getPorteurNom() {
		return porteurNom;
	}

	/**
	 * @param porteurNom the porteurNom to set
	 */
	public void setPorteurNom(String porteurNom) {
		this.porteurNom = porteurNom;
	}

	/**
	 * @return the porteurInstitution
	 */
	public String getPorteurInstitution() {
		return porteurInstitution;
	}

	/**
	 * @param porteurInstitution the porteurInstitution to set
	 */
	public void setPorteurInstitution(String porteurInstitution) {
		this.porteurInstitution = porteurInstitution;
	}

	/**
	 * @return the porteurRegion
	 */
	public String getPorteurRegion() {
		return porteurRegion;
	}

	/**
	 * @param porteurRegion the porteurRegion to set
	 */
	public void setPorteurRegion(String porteurRegion) {
		this.porteurRegion = porteurRegion;
	}

	/**
	 * @return the besoinSysteme
	 */
	public String getBesoinSysteme() {
		return besoinSysteme;
	}

	/**
	 * @param besoinSysteme the besoinSysteme to set
	 */
	public void setBesoinSysteme(String besoinSysteme) {
		this.besoinSysteme = besoinSysteme;
	}

	/**
	 * @return the apportSysteme
	 */
	public String getApportSysteme() {
		return apportSysteme;
	}

	/**
	 * @param apportSysteme the apportSysteme to set
	 */
	public void setApportSysteme(String apportSysteme) {
		this.apportSysteme = apportSysteme;
	}

	/**
	 * @return the utilisateurFinal
	 */
	public String getUtilisateurFinal() {
		return utilisateurFinal;
	}

	/**
	 * @param utilisateurFinal the utilisateurFinal to set
	 */
	public void setUtilisateurFinal(String utilisateurFinal) {
		this.utilisateurFinal = utilisateurFinal;
	}

	/**
	 * @return the caracteristique
	 */
	public String getCaracteristique() {
		return caracteristique;
	}

	/**
	 * @param caracteristique the caracteristique to set
	 */
	public void setCaracteristique(String caracteristique) {
		this.caracteristique = caracteristique;
	}

	/**
	 * @return the centreNom
	 */
	public String getCentreNom() {
		return centreNom;
	}

	/**
	 * @param centreNom the centreNom to set
	 */
	public void setCentreNom(String centreNom) {
		this.centreNom = centreNom;
	}

	/**
	 * @return the centreNombre
	 */
	public String getCentreNombre() {
		return centreNombre;
	}

	/**
	 * @param centreNombre the centreNombre to set
	 */
	public void setCentreNombre(String centreNombre) {
		this.centreNombre = centreNombre;
	}

	/**
	 * @return the centrePeriphNombre
	 */
	public String getCentrePeriphNombre() {
		return centrePeriphNombre;
	}

	/**
	 * @param centrePeriphNombre the centrePeriphNombre to set
	 */
	public void setCentrePeriphNombre(String centrePeriphNombre) {
		this.centrePeriphNombre = centrePeriphNombre;
	}

	/**
	 * @return the specialite
	 */
	public String getSpecialite() {
		return specialite;
	}

	/**
	 * @param specialite the specialite to set
	 */
	public void setSpecialite(String specialite) {
		this.specialite = specialite;
	}

	/**
	 * @return the application
	 */
	public String getApplication() {
		return application;
	}

	/**
	 * @param application the application to set
	 */
	public void setApplication(String application) {
		this.application = application;
	}

	/**
	 * @return the patientNombre
	 */
	public String getPatientNombre() {
		return patientNombre;
	}

	/**
	 * @param patientNombre the patientNombre to set
	 */
	public void setPatientNombre(String patientNombre) {
		this.patientNombre = patientNombre;
	}

	/**
	 * @return the carac
	 */
	public String getCarac() {
		return carac;
	}

	/**
	 * @param carac the carac to set
	 */
	public void setCarac(String carac) {
		this.carac = carac;
	}

	/**
	 * @return the tempsVie
	 */
	public String getTempsVie() {
		return tempsVie;
	}

	/**
	 * @param tempsVie the tempsVie to set
	 */
	public void setTempsVie(String tempsVie) {
		this.tempsVie = tempsVie;
	}

	/**
	 * @return the tempsMaturite
	 */
	public String getTempsMaturite() {
		return tempsMaturite;
	}

	/**
	 * @param tempsMaturite the tempsMaturite to set
	 */
	public void setTempsMaturite(String tempsMaturite) {
		this.tempsMaturite = tempsMaturite;
	}

	/**
	 * @return the tempsFonctionnement
	 */
	public String getTempsFonctionnement() {
		return tempsFonctionnement;
	}

	/**
	 * @param tempsFonctionnement the tempsFonctionnement to set
	 */
	public void setTempsFonctionnement(String tempsFonctionnement) {
		this.tempsFonctionnement = tempsFonctionnement;
	}

	/**
	 * @return the tempsActivite
	 */
	public String getTempsActivite() {
		return tempsActivite;
	}

	/**
	 * @param tempsActivite the tempsActivite to set
	 */
	public void setTempsActivite(String tempsActivite) {
		this.tempsActivite = tempsActivite;
	}

	/**
	 * @return the tempsFrequence
	 */
	public String getTempsFrequence() {
		return tempsFrequence;
	}

	/**
	 * @param tempsFrequence the tempsFrequence to set
	 */
	public void setTempsFrequence(String tempsFrequence) {
		this.tempsFrequence = tempsFrequence;
	}

	/**
	 * @return the tempsType
	 */
	public String getTempsType() {
		return tempsType;
	}

	/**
	 * @param tempsType the tempsType to set
	 */
	public void setTempsType(String tempsType) {
		this.tempsType = tempsType;
	}

	/**
	 * @return the finalite
	 */
	public String getFinalite() {
		return finalite;
	}

	/**
	 * @param finalite the finalite to set
	 */
	public void setFinalite(String finalite) {
		this.finalite = finalite;
	}

	/**
	 * @return the dateDebut
	 */
	public String getDateDebut() {
		return dateDebut;
	}

	/**
	 * @param dateDebut the dateDebut to set
	 */
	public void setDateDebut(String dateDebut) {
		this.dateDebut = dateDebut;
	}

	/**
	 * @return the financement
	 */
	public boolean[] getFinancement() {
		return financement;
	}

	/**
	 * @param financement the financement to set
	 */
	public void setFinancement(boolean[] financement) {
		this.financement = financement;
	}

	/**
	 * @return the professionnelSante
	 */
	public boolean[] getProfessionnelSante() {
		return professionnelSante;
	}

	/**
	 * @param professionnelSante the professionnelSante to set
	 */
	public void setProfessionnelSante(boolean[] professionnelSante) {
		this.professionnelSante = professionnelSante;
	}

	/**
	 * @return the professionnelSocio
	 */
	public boolean[] getProfessionnelSocio() {
		return professionnelSocio;
	}

	/**
	 * @param professionnelSocio the professionnelSocio to set
	 */
	public void setProfessionnelSocio(boolean[] professionnelSocio) {
		this.professionnelSocio = professionnelSocio;
	}

	/**
	 * @return the domaine
	 */
	public boolean[] getDomaine() {
		return domaine;
	}

	/**
	 * @param domaine the domaine to set
	 */
	public void setDomaine(boolean[] domaine) {
		this.domaine = domaine;
	}

	/**
	 * @return the population
	 */
	public boolean[] getPopulation() {
		return population;
	}

	/**
	 * @param population the population to set
	 */
	public void setPopulation(boolean[] population) {
		this.population = population;
	}

	/**
	 * @return the equipement
	 */
	public boolean[] getEquipement() {
		return equipement;
	}

	/**
	 * @param equipement the equipement to set
	 */
	public void setEquipement(boolean[] equipement) {
		this.equipement = equipement;
	}

	// Méthodes publiques
	public void ajouterReponse(Reponse reponse)
	{
		// Variables
		LigneProjet ligneProjet=null;
		
		// Initialisation de la nouvelle ligne
		ligneProjet=new LigneProjet(reponse);
		
		// On v�rifie que la ligne (reponse) n'existe pas d�j�
		if(listeLigneProjet.contains(ligneProjet))
		{
			// Si la reponse existe, on ne fait rien
			// ligneProjet=listeLigneProjet.get(listeLigneProjet.indexOf(ligneProjet));
			// ligneProjet.ajouter();
		}
		else
		{
			// Sinon on ajoute la ligne à la liste
			listeLigneProjet.add(ligneProjet);
		}
		
		// On redéfinit le total
		this.total+=ligneProjet.getCoefficient();
		}
	
	
	public void supprimerUneReponse(Reponse reponse)
	{
		// Variables
		LigneProjet ligneProjet=null;
		
		// Initialisation de la nouvelle ligne
		ligneProjet=new LigneProjet(reponse);
		
		// On v�rifie que la ligne (reponse) existe déjà
		if(listeLigneProjet.contains(ligneProjet))
		{
			// On r�cupert la ligne de la liste
			ligneProjet=listeLigneProjet.get(listeLigneProjet.indexOf(ligneProjet));

			// On supprime la ligne
			listeLigneProjet.remove(ligneProjet);

			// On red�finit le total
			this.total-=ligneProjet.getCoefficient();
		}
	}
	
	
	public void supprimerReponse(Reponse reponse)
	{
		// Variables
		LigneProjet ligneProjet=null;
		
		// Initialisation de la nouvelle ligne
		ligneProjet=new LigneProjet(reponse);
		
		// On v�rifie que la ligne (reponse) existe déjà
		if(listeLigneProjet.contains(ligneProjet))
		{
			// On récupère la ligne de la liste
			ligneProjet = listeLigneProjet.get(listeLigneProjet.indexOf(ligneProjet));
			
			// On supprime la ligne
			listeLigneProjet.remove(ligneProjet);
		}
	}

		
}
